package com.circ2disease.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.circ2disease.pojo.CircRNA;
import com.circ2disease.pojo.CircRNA_table;
import com.circ2disease.pojo.Disease;
import com.circ2disease.pojo.RelationEneity;


import java.util.List;
import java.util.Set;


public  interface CircRNAService {

   Integer addCircRNA(CircRNA circRNA);

   Integer addTable(CircRNA_table circTable);

   Integer addAlias(Integer rnaid, String aliasName);


    /**
     * 获取所有关系表分页对象
     *
     *
     */
    IPage<CircRNA_table> listsimpleTable(Integer current, Integer size);


    IPage<CircRNA_table> listTable(Integer current, Integer size);
    /**
     * 查询所有疾病
     *
     * @return 库中所有疾病页分页对象
     */
    IPage<Disease> listDisease(Integer current, Integer size);


    /**
     * 查询所有rna(非关系表)
     *
     * @return 返回所有rna分页对象
     */
    IPage<CircRNA> listCircRNA(Integer current, Integer size);

    /**
     * 根据rnaid获取rna名
     *
     * @param id rnaid
     * @return rna名
     */
    String getRNANameById(Integer id);


    /**
     * 根据rna名称查询rna的id
     *
     * @param aliasName rna名称,可以是别名
     * @return 返回rna的id
     */
    Integer getRNAidByName(String aliasName);

    /**
     *  根据rna名查询table
     * @param RNAName rna名
     * @return 查询到的rna表分页对象 结果不唯一
     */
    IPage<CircRNA_table> getTableByRNAName(String RNAName, Integer current, Integer size);


    /**
     * 根据RNA名查询简单关系表
     * @param rnaName rna名
     * @return 简单关系表分页对象
     */
    IPage<CircRNA_table> getSimpleTableByrnaName(String rnaName, Integer current, Integer size);


    /**
     * 根据rna的id查询关系表
     *
     * @param id 要查询的rna的id
     * @return 返回所有关系表分页对象(结果可能不唯一)
     */
    IPage<CircRNA_table> getTableByid(Integer id, Integer current, Integer size);


    /**
     * 根据rna的id查询简单关系表
     *
     * @param id 要查询的rna的id
     * @return 返回所有关系表分页对象(结果可能不唯一, 简化数据, 做浏览用)
     */
    IPage<CircRNA_table> getSimpleTableByrnaid(Integer id, Integer current, Integer size);


    /**
     * 根据疾病名查询所有关系表
     *
     * @param diseaseName 待查询疾病名
     * @return 返回所有关系表分页对象(结果可能不唯一)
     */
    IPage<CircRNA_table> getTableByDisease(String diseaseName, Integer current, Integer size);

    /**
     * 通过疾病名获取简单的关系信息,
     *
     * @param diseaseName 待查疾病名
     * @return 所有关系表(简单数据, 做浏览用)
     */
    IPage<CircRNA_table> getSimpleTableByDisease(String diseaseName, Integer current, Integer size);

    /**
     * 通过rna名和疾病名查询关系表 可能为空
     * @param rnaName 待查rna名
     * @param diseaseName 待查疾病名
     * @return 所需关系表
     */
    CircRNA_table getTableByRNAandDisease(String rnaName, String diseaseName);

    /**
     * 根据关系表id查询详细信息(结果唯一)
     *
     * @param Tableid 关系表id
     * @return 唯一关系表
     */
    CircRNA_table getTableByTableId(Integer Tableid);

    /*获取所有关系*/
    List<RelationEneity> listRelationEneity();

    /*获取关系按关键字(set保证不重复)*/
    Set<RelationEneity> listRelationEneitybyName(List<String> rnaName, List<String> diseaseName);


}
